looks like the mouse and its OHCI has the same issue, so it might be related to kernel preemption(which is off for me, right?) or maybe RCU stuff (conjecture)
apparently, for the mouse, enabling kernel preemption (CONFIG_PREEMPT=y)
makes it still recover once pm was in effect, but not for the card reader though


====
ok more info:
in powertop, these cases make the card reader work:
1.
>> Bad           Runtime PM for PCI Device Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller                   
>> Good          Autosuspend for USB device USB2.0-CRW [Generic]                                                        

and
2.
>> Good          Runtime PM for PCI Device Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller                   
   Bad           Autosuspend for USB device USB2.0-CRW [Generic]
--
- now in the case where EHCI was Good and CRW was Good, then the only way to make it work is to set CRW to Bad. Otherwise, if EHCI was Bad but CRW Good, then it's sensed, unless what I said before happened and thus you need CRW set to Bad first, to reset it.
- if CRW is bad, then EHCI state is irrelevant (can be Good or Bad) it will still work.
Good is auto
Bad is on
in power/control

EHCI is echo 'auto' > '/sys/bus/pci/devices/0000:00:13.2/power/control';
CRW is echo 'on' > '/sys/bus/usb/devices/2-1/power/control';

note there's another EHCI(same name on 12.2 not 13.2) that has no effect.


EHCI 13.2 #lspci
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11) (prog-if 20 [EHCI])
        Subsystem: Lenovo Device 397b
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 64, Cache Line Size: 32 bytes
        Interrupt: pin B routed to IRQ 17
        Region 0: Memory at f014a800 (32-bit, non-prefetchable) [size=256]
        Capabilities: [c0] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
                Bridge: PM- B3+
        Capabilities: [e4] Debug port: BAR=1 offset=00e0
        Kernel driver in use: ehci-pci
--
CRW #lsusb -vvvv
Bus 002 Device 002: ID 0bda:0139 Realtek Semiconductor Corp. RTS5139 Card Reader Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol       255 Vendor Specific Protocol
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x0139 RTS5139 Card Reader Controller
  bcdDevice           39.60
  iManufacturer           1 Generic
  iProduct                2 USB2.0-CRW
  iSerial                 3 20100201396000000
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 CARD READER
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      6 
      bInterfaceProtocol     80 
      iInterface              5 Bulk-In, Bulk-Out, Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0003  1x 3 bytes
        bInterval              10
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

-------
also note that the module rtsx_usb_ms should be in modules.conf or autoloaded
in order for the card reader to work. Maybe only rtsx_usb is needed instead of ~_ms.

-----------
reported in a comment: https://bugzilla.kernel.org/show_bug.cgi?id=79191#c6
might need to report it as a new bug, but don't yet know if I have searched for it enough and also how to explain it
---

ok, so, laptop's internal card reader in linux 3.16-rc6
isn't working when tlp set it to Auto (control is auto)
so entering powertop
>> Good          Autosuspend for USB device USB2.0-CRW [Generic]
changing that from Good to Bad, aka from auto to on
will detect the already plugged in MSPRO card (memory stick duo card)
and setting it to Good afterwards, while card is still in, will still work.
However after unpluggin the card, replugging it won't recognize it again.

Makes sense. But still.
dmesg included

